package br.com.sgpv2.service.contribuicaoprevidenciaria;

import java.util.ArrayList;
import java.util.List;
import java.util.logging.Logger;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;

import br.com.sgpv2.controler.NegocioExeception;
import br.com.sgpv2.entity.contribuicaoprevidenciaria.ContribuicaoPrevidenciaria;
import br.com.sgpv2.hibernate.contribuicaoprevidenciaria.ContribuicaoPrevidenciariaRepository;


@Service(value = "contribuicaoPrevidenciariaService")
@Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
public class ContribuicaoPrevidenciariaServiceImpl implements
		ContribuicaoPrevidenciariaService {

	@Autowired
	ContribuicaoPrevidenciariaRepository contribuicaoPrevidenciariaRepository;

	/** {@inheritDoc} */
	@Override
	public void alterar(ContribuicaoPrevidenciaria contribuicaoPrevidenciaria) {
		contribuicaoPrevidenciariaRepository
				.alterar(contribuicaoPrevidenciaria);

	}

	/** {@inheritDoc} */
	@Override
	public ContribuicaoPrevidenciaria buscar(Integer pk)
			throws NegocioExeception {
		return contribuicaoPrevidenciariaRepository.buscar(pk);
	}

	private static final Logger LOG = Logger
			.getLogger(ContribuicaoPrevidenciariaServiceImpl.class.getName());

	/** {@inheritDoc} */
	@Override
	public List<ContribuicaoPrevidenciaria> listar() throws Exception {
		List<ContribuicaoPrevidenciaria> retorno = new ArrayList<ContribuicaoPrevidenciaria>();
		try {
			retorno = contribuicaoPrevidenciariaRepository.listar();
		} catch (Exception e) {
			LOG.info("Erro no acesso ao banco de dados." + e.getMessage());
		}

		return retorno;
	}

	/** {@inheritDoc} */
	@Override
	public void remover(ContribuicaoPrevidenciaria contribuicaoPrevidenciaria)
			throws Exception {
		contribuicaoPrevidenciariaRepository
				.excluir(contribuicaoPrevidenciaria);

	}

	/** {@inheritDoc} */
	@Override
	public ContribuicaoPrevidenciaria salvar(
			ContribuicaoPrevidenciaria contribuicaoPrevidenciaria)
			throws Exception {
		contribuicaoPrevidenciariaRepository.salvar(contribuicaoPrevidenciaria);
		return contribuicaoPrevidenciaria;
	}

	/** {@inheritDoc} */
	@Override
	public void saveOrUpdate(
			ContribuicaoPrevidenciaria contribuicaoPrevidenciaria) {
		contribuicaoPrevidenciariaRepository
				.saveOrUpdate(contribuicaoPrevidenciaria);

	}

	/** {@inheritDoc} */
	@Override
	public List<ContribuicaoPrevidenciaria> consultarPorMesAno(String mes,
			String ano) {
		return contribuicaoPrevidenciariaRepository
				.consultarPorMesAno(mes, ano);
	}

	/**
	 * Recupera o DAO de Contribuição previdênciária.
	 */
	public ContribuicaoPrevidenciariaRepository getContribuicaoPrevidenciariaRepository() {
		return contribuicaoPrevidenciariaRepository;
	}

	/**
	 * Configura o DAO de Contribuição previdênciária.
	 */
	public void setContribuicaoPrevidenciariaRepository(
			ContribuicaoPrevidenciariaRepository contribuicaoPrevidenciariaRepository) {
		this.contribuicaoPrevidenciariaRepository = contribuicaoPrevidenciariaRepository;
	}

}
